package com.manage.pojo.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 诉讼对象 cm_litigation
 *
 * @author ruoyi
 * @date 2025-10-05
 */
@Data
@TableName("cm_litigation")
public class CmLitigation {
    private static final long serialVersionUID = 1L;

    /** id */
    private Long id;

    /** 外部唯一id */
    private String publicId;

    /** 案件id */
    private Long caseId;

    /** 受理通知书 */
    private Long acceptanceNoticeDocId;

    /** 缴费金额 */
    private BigDecimal paymentAmount;

    /** 缴费通知书 */
    private Long paymentNoticeDocId;

    /** 缴费凭证 */
    private String paymentVoucherDocIds;

    /** 诉讼/仲裁案号 */
    private String caseNumber;

    /** 是否有财产保全：0无，1有 */
    private Integer hasPropertyPreservation;

    /** 保全开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date preservationStartDate;

    /** 保全结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date preservationEndDate;

    /** 保全阶段 */
    private Long preservationStage;

    /** 保全申请书 */
    private Long preservationApplicationDocId;

    /** 网络查控申请书 */
    private Long onlineSearchApplicationDocId;

    /** 紧急情况说明 */
    private Long emergencyExplanationDocId;

    /** 担保函 */
    private Long guaranteeLetterDocId;

    /** 保全担保费用凭证 */
    private String preservationFeeVoucherDocIds;

    /** 保全受理通知书 */
    private Long preservationNoticeDocId;

    /** 保全缴费通知书 */
    private Long preservationPaymentNoticeDocId;

    /** 保全缴费凭证 */
    private String preservationPaymentVoucherDocIds;

    /** 法院裁定书 */
    private Long courtVerdictPreservationDocId;

    /** 保全结果 */
    private String preservationResult;

    /** 一次开庭传票 */
    private Long firstTrialFirstSubpoenaDocId;

    /** 一次开庭日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date firstTrialFirstDate;

    /** 二次开庭传票 */
    private Long firstTrialSecondSubpoenaDocId;

    /** 二次开庭日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date firstTrialSecondDate;

    /** 三次开庭传票 */
    private Long firstTrialThirdSubpoenaDocId;

    /** 三次开庭日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date firstTrialThirdDate;

    /** 一审裁决日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date firstTrialVerdictDate;

    /** 一审裁判文书 */
    private Long firstTrialVerdictDocId;

    /** 一审执行期限 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date firstTrialExecutionDeadline;

    /** 是否有二审：0无，1有 */
    private Integer hasSecondAppeal;

    /** 二审一次开庭传票 */
    private Long secondTrialFirstSubpoenaDocId;

    /** 二审二次开庭日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date secondTrialSecondDate;

    /** 二审三次开庭传票 */
    private Long secondTrialThirdSubpoenaDocId;

    /** 二审三次开庭日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date secondTrialThirdDate;

    /** 二审裁决日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date secondTrialVerdictDate;

    /** 二审裁判文书 */
    private Long secondTrialVerdictDocId;

    /** 二审执行期限 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date secondTrialExecutionDeadline;

    /** 是否有再审：0无，1有 */
    private Integer hasRetrial;

    /** 再审一次开庭传票 */
    private Long retrialFirstSubpoenaDocId;

    /** 再审一次开庭日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date retrialFirstDate;

    /** 再审二次开庭传票 */
    private Long retrialSecondSubpoenaDocId;

    /** 再审二次开庭日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date retrialSecondDate;

    /** 再审三次开庭传票 */
    private Long retrialThirdSubpoenaDocId;

    /** 再审三次开庭日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date retrialThirdDate;

    /** 再审裁决日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date retrialVerdictDate;

    /** 再审裁判文书 */
    private Long retrialVerdictDocId;

    /** 再审执行期限 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date retrialExecutionDeadline;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;


    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("publicId", getPublicId())
                .append("caseId", getCaseId())
                .append("acceptanceNoticeDocId", getAcceptanceNoticeDocId())
                .append("paymentAmount", getPaymentAmount())
                .append("paymentNoticeDocId", getPaymentNoticeDocId())
                .append("paymentVoucherDocIds", getPaymentVoucherDocIds())
                .append("caseNumber", getCaseNumber())
                .append("hasPropertyPreservation", getHasPropertyPreservation())
                .append("preservationStartDate", getPreservationStartDate())
                .append("preservationEndDate", getPreservationEndDate())
                .append("preservationStage", getPreservationStage())
                .append("preservationApplicationDocId", getPreservationApplicationDocId())
                .append("onlineSearchApplicationDocId", getOnlineSearchApplicationDocId())
                .append("emergencyExplanationDocId", getEmergencyExplanationDocId())
                .append("guaranteeLetterDocId", getGuaranteeLetterDocId())
                .append("preservationFeeVoucherDocIds", getPreservationFeeVoucherDocIds())
                .append("preservationNoticeDocId", getPreservationNoticeDocId())
                .append("preservationPaymentNoticeDocId", getPreservationPaymentNoticeDocId())
                .append("preservationPaymentVoucherDocIds", getPreservationPaymentVoucherDocIds())
                .append("courtVerdictPreservationDocId", getCourtVerdictPreservationDocId())
                .append("preservationResult", getPreservationResult())
                .append("firstTrialFirstSubpoenaDocId", getFirstTrialFirstSubpoenaDocId())
                .append("firstTrialFirstDate", getFirstTrialFirstDate())
                .append("firstTrialSecondSubpoenaDocId", getFirstTrialSecondSubpoenaDocId())
                .append("firstTrialSecondDate", getFirstTrialSecondDate())
                .append("firstTrialThirdSubpoenaDocId", getFirstTrialThirdSubpoenaDocId())
                .append("firstTrialThirdDate", getFirstTrialThirdDate())
                .append("firstTrialVerdictDate", getFirstTrialVerdictDate())
                .append("firstTrialVerdictDocId", getFirstTrialVerdictDocId())
                .append("firstTrialExecutionDeadline", getFirstTrialExecutionDeadline())
                .append("hasSecondAppeal", getHasSecondAppeal())
                .append("secondTrialFirstSubpoenaDocId", getSecondTrialFirstSubpoenaDocId())
                .append("secondTrialSecondDate", getSecondTrialSecondDate())
                .append("secondTrialThirdSubpoenaDocId", getSecondTrialThirdSubpoenaDocId())
                .append("secondTrialThirdDate", getSecondTrialThirdDate())
                .append("secondTrialVerdictDate", getSecondTrialVerdictDate())
                .append("secondTrialVerdictDocId", getSecondTrialVerdictDocId())
                .append("secondTrialExecutionDeadline", getSecondTrialExecutionDeadline())
                .append("hasRetrial", getHasRetrial())
                .append("retrialFirstSubpoenaDocId", getRetrialFirstSubpoenaDocId())
                .append("retrialFirstDate", getRetrialFirstDate())
                .append("retrialSecondSubpoenaDocId", getRetrialSecondSubpoenaDocId())
                .append("retrialSecondDate", getRetrialSecondDate())
                .append("retrialThirdSubpoenaDocId", getRetrialThirdSubpoenaDocId())
                .append("retrialThirdDate", getRetrialThirdDate())
                .append("retrialVerdictDate", getRetrialVerdictDate())
                .append("retrialVerdictDocId", getRetrialVerdictDocId())
                .append("retrialExecutionDeadline", getRetrialExecutionDeadline())
                .append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime())
                .toString();
    }
}
